package br.com.fatecpg.minhasfinancas.sqlite;

import java.util.Date;
import java.util.List;
import br.com.fatecpg.minhasfinancas.model.DespesaModel;
import br.com.fatecpg.minhasfinancas.sqlite.BancoSqlite;
import android.R.integer;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class BancoSqlite extends SQLiteOpenHelper {

	private static final String DATABASE_NAME = "financas";
	private static final int DATABASE_VERSION = 1;

	static String query = "CREATE TABLE tb_usuario ("
			+ "cd_usuario INTEGER PRIMARY KEY AUTOINCREMENT,"
			+ "nm_usuario VARCHAR NULL " + ");";

	// + "CREATE TABLE tb_cartao("
	// + "cd_cartao INTEGER PRIMARY KEY NOT NULL,"
	// + "nm_bandeira_cartao VARCHAR NULL," + "dc_cartao INTEGER NLL,"
	// + "ic_cartao_credito INTEGER  NULL,"
	// + "ic_cartao_debito INTEGER NULL" + "); "
	//
	// + "CREATE TABLE tb_alerta_config ("
	// + "cd_alerta_config INTEGER PRIMARY KEY NOT NULL,"
	// + "hr_alerta TEXT NULL, " + "hr_intervalo_alerta TEXT NULL,"
	// + "dc_mensagem VARCHAR NULL, " + "ic_notificacao VARCHAR NULL"
	// + "); "
	//
	// +"CREATE TABLE tb_forma_pagamento ("
	// + "cd_forma_pagamento INTEGER PRIMARY KEY NOT NULL,"
	// + "nm_forma_pagamento VARCHAR NULL "
	// + "); "
	//
	// + "CREATE TABLE tb_despesa ( "
	// + "cd_despesa INTEGER PRIMARY KEY NOT NULL, "
	// + "cd_forma_pagamento INTEGER NOT NULL,"
	// + "cd_cartao INTEGER NOT NULL,"
	// + "dc_despesa VARCHAR NULL,"
	// + "vl_despesa DECIMAL(8,2) NULL,"
	// + "dt_despesa VARCHAR NULL,"
	// + "cd_tipo_despesa INTEGER NULL,"
	// + "cd_alerta_config INTEGER NULL,"
	// +
	// "FOREIGN KEY (cd_forma_pagamento) REFERENCES tb_forma_pagamento(cd_forma_pagamento),"
	// + "FOREIGN KEY (cd_cartao) REFERENCES tb_cartao(cd_cartao),"
	// +
	// "FOREIGN KEY (cd_alerta_config) REFERENCES tb_alerta_config(cd_alerta_config)"
	// + ");"
	//
	// + "CREATE TABLE tb_periodo ("
	// + "cd_periodo INTEGER PRIMARY KEY NOT NULL ,"
	// + "tb_usuario_cd_usuario INTEGER NOT NULL,  "
	// + "dt_inicio_periodo VARCHAR NULL,  "
	// + "dt_fim_periodo VARCHAR NULL, "
	// + "cd_usuario INTEGER NULL,  "
	// + "FOREIGN KEY (cd_usuario) REFERENCES tb_usuario(cd_usuario)"
	// + ");"
	//
	// + "CREATE TABLE tb_periodo_has_tb_conta ( "
	// + "cd_periodo INTEGER NOT NULL,  "
	// + "cd_despesa INTEGER NOT NULL,  "
	// + "PRIMARY KEY (cd_periodo, cd_despesa),"
	// + "FOREIGN KEY (cd_periodo) REFERENCES tb_periodo(cd_periodo), "
	// + "FOREIGN KEY (cd_despesa) REFERENCES tb_despesa(cd_despesa)  "
	// + ");";

	private static final String DATABASE_CREATE = query;

	public BancoSqlite(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		String query = "CREATE TABLE tb_usuario ("
				+ "cd_usuario INTEGER PRIMARY KEY AUTOINCREMENT,"
				+ "nm_usuario VARCHAR NULL " + ");";


		// String DATABASE_CREATE = query;

		db.execSQL(query);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		//db.execSQL("DROP TABLE IF EXISTS");
		this.onCreate(db);
	}

	BancoSqlite dbHelper = null;

	private static final String KEY_ID = "cd_despesa";
	private static final String KEY_NOME = "nm_usuario";
	private static final String KEY_CODIGO = "cd_usuario";
	private static final String KEY_VALOR = "vl_despesa";
	private static final String KEY_DESCRICAO = "dc_despesa";
	private static final String KEY_DATA = "dt_despesa";
	private static final String KEY_TIPO_PAGAMENTO = "cd_tipo_despesa";
	private static final String KEY_CARTAO = "cd_cartao";
	private static final String TABLE_DESPESA = "tb_despesa";
	private static final String TABLE_USUARIO = "tb_usuario";

	// private static final String[] COLUMNS = { KEY_ID, KEY_VALOR,
	// KEY_DESCRICAO,
	// KEY_DATA, KEY_TIPO_PAGAMENTO, KEY_CARTAO };

	private static final String[] COLUMNS = { KEY_CODIGO };

	public void AddDespesa(DespesaModel model) {
		Log.d("Insert", model.toString());

		SQLiteDatabase db = dbHelper.getWritableDatabase();

		ContentValues values = new ContentValues();
		values.put(KEY_NOME, "Everton");
		// values.put(KEY_VALOR,"200");
		// values.put(KEY_DATA, new Date().toString());
		// values.put(KEY_TIPO_PAGAMENTO, "pagamento");
		// values.put(KEY_CARTAO, 1);

		db.insert(TABLE_USUARIO, null, values);

		db.close();
	}

	public DespesaModel getDespesa(int id) {
		id = 1;
		// 1. get reference to readable DB
		SQLiteDatabase db = this.getReadableDatabase();

		// 2. build query
		Cursor cursor = db.query(TABLE_USUARIO, // a. table
				COLUMNS, // b. column names
				" cd_usuario = ? ", // c. selections
				new String[] { String.valueOf(id) }, // d. selections args
				null, // e. group by
				null, // f. having
				null, // g. order by
				null); // h. limit

		// 3. if we got results get the first one
		if (cursor != null)
			cursor.moveToFirst();

		// 4. build book object
		DespesaModel model = new DespesaModel();
		model.setDescricao(cursor.getString(1));
		
		Log.d("getDespesa(" + id + ")", model.toString());

		// 5. return book
		return model;
	}
}
